package com.qiaofang.dataprocessing.stub.facade;

import com.qiaofang.common.request.DataRequest;
import com.qiaofang.common.response.DataResultResponse;
import com.qiaofang.dataprocessing.stub.bean.EmpManageDTO;
import com.qiaofang.dataprocessing.stub.bean.EmployeeCountDTO;
import com.qiaofang.dataprocessing.stub.bean.ListVerifyCodeDTO;
import com.qiaofang.dataprocessing.stub.bean.ProRightsInterestsDTO;
import com.qiaofang.dataprocessing.stub.bean.request.PropertyEmpOrderRequest;
import com.qiaofang.dataprocessing.stub.bean.request.SysFieldSyncRequest;
import com.qiaofang.dataprocessing.stub.bean.response.HistoryConsignCodeDTO;
import com.qiaofang.dataprocessing.stub.bean.response.PropertyWaterMarkDTO;
import com.qiaofang.dataprocessing.stub.bean.response.SysFieldSyncResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;
import java.util.Map;

@FeignClient(name = "dataprocessing",url="${feign.url.dataprocessing}")
@RequestMapping("/syncData")
@Api(tags = "syncData", description = "小程序数据同步")
public interface MiniProgramDataSyncFacade {

    @RequestMapping(value = "/sysFieldList", method = RequestMethod.POST)
    @ApiOperation(value = "权益方列表", notes = "权益方列表")
    DataResultResponse<SysFieldSyncResponse> sysFieldList(DataRequest<SysFieldSyncRequest> request);


    @RequestMapping(value = "/getProRightsInterests", method = RequestMethod.POST)
    @ApiOperation(value = "获取房源权益方数据", notes = "获取房源权益方数据")
    DataResultResponse<List<ProRightsInterestsDTO>> getProRightsInterests(DataRequest<SysFieldSyncRequest> request);


    @RequestMapping(value = "/getProEmpOrder", method = RequestMethod.POST)
    @ApiOperation(value = "获取房源经纪人排序", notes = "获取房源经纪人排序")
    DataResultResponse<List<String>> getProEmpOrder(DataRequest<PropertyEmpOrderRequest> request);

    @RequestMapping(value = "/getV10PropertFieldyByParam", method = RequestMethod.POST)
    @ApiOperation(value = "动态获取V10租售房源表历史字段", notes = "动态获取V10租售房源表历史字段")
    DataResultResponse<List<ListVerifyCodeDTO>> getV10PropertFieldyByParam();

    @RequestMapping(value = "/getHistoryConsignCode", method = RequestMethod.POST)
    @ApiOperation(value = "获取V10租售房源表委托编号历史字段", notes = "获取V10租售房源表委托编号历史字段")
    DataResultResponse<List<HistoryConsignCodeDTO>> getHistoryConsignCode();

    @RequestMapping(value = "/getEmpManageData", method = RequestMethod.POST)
    @ApiOperation(value = "获取经纪人缺失历史数据", notes = "获取经纪人缺失历史数据")
    DataResultResponse<EmpManageDTO> getEmpManageData();


    @RequestMapping(value = "/getInspectionCountList", method = RequestMethod.POST)
    @ApiOperation(value = "获取经纪人带看次数", notes = "获取经纪人带看次数")
    DataResultResponse<List<EmployeeCountDTO>> getInspectionCountList();

    @RequestMapping(value = "/getTransactionCountList", method = RequestMethod.POST)
    @ApiOperation(value = "获取经纪人成交单数", notes = "获取经纪人成交单数")
    DataResultResponse<List<EmployeeCountDTO>> getTransactionCountList();

    @RequestMapping(value = "/getPropertyTypeMap", method = RequestMethod.POST)
    @ApiOperation(value = "获取房源类型数据", notes = "获取房源类型数据")
    DataResultResponse<Map<String, List<String>>> getPropertyTypeMap(DataRequest<SysFieldSyncRequest> request);

    @RequestMapping(value = "/getPropertyImgWatermark", method = RequestMethod.POST)
    @ApiOperation(value = "获取房源图片水印", notes = "获取房源图片水印")
    DataResultResponse<PropertyWaterMarkDTO> getPropertyImgWatermark();

    @RequestMapping(value = "/deleteMessageWeekAgo", method = RequestMethod.POST)
    @ApiOperation(value = "删除七天前的小程序日报邮件", notes = "获取房源图片水印")
    DataResultResponse<Integer> deleteMessageWeekAgo();
}
